Interest in synchronizing personal digital data has grown since mobile devices were introduced. One early approach to synchronizing personal data required a user to update the data on a personal computer (PC). The PC in turn synchronized the data with servers. To update the mobile device when leaving the office required the user to re-input the data manually on the mobile device.
As the mobile device market matured, master-slave replication systems were developed to synchronize the data. A master-slave replication system would take data from the master device, the PC, and replicate it to the slave device, the mobile device. Usually, this avoided the need to input the data in the PC and then to manually re-input the data into the mobile device. Sometimes, however, a user would have to input the data on both devices. For example, if the user was out of the office and wanted to update information on the mobile device, the user could manually enter the data into the mobile device. Before synchronization with the PC, however, the user would have to re-input the same data into the PC to avoid having the changes made on the mobile device overwritten.
Eventually, two-way synchronization techniques were developed. Using these techniques a user could update information either on the PC or the mobile device. Then, to synchronize the data, the two devices were connected and information was exchanged. This technique was generally satisfactory until the devices were separated by a high latency, low bandwidth, and/or low reliability network, such as a wireless or cellular network.
With wireless networks, the risk that a connection will be lost is several times greater than with non-wireless systems. Some synchronization techniques address potential interruption by sending acknowledgments at certain points while a message is received. Sending multiple acknowledgments, however, exacerbates other problems in cellular networks. Typically, cellular networks have high latency. Each transmission is subject to this latency. Thus, using acknowledgments may increase the total synchronization time which gives rise to a greater potential for interruption by, for example, an unreliable network.
Additionally, cellular networks often have relatively low bandwidth. Synchronizing a relatively small number of objects between a PC and a mobile device over a cellular network may require several minutes; synchronizing many objects may require hours. This problem is typically not faced by devices directly connected or connected through a local area network.
Thus, there is a need in the art for a method of synchronizing data on devices connected by high latency, low bandwidth, and/or unreliable networks.